///*
// * Copyright (C) 2017 Baidu, Inc. All Rights Reserved.
// */
//package com.anyun.taille.ocrindoorpos;
//
//import java.io.File;
//
//import com.baidu.ocr.sdk.OCR;
//import com.baidu.ocr.sdk.OnResultListener;
//import com.baidu.ocr.sdk.exception.OCRError;
//import com.baidu.ocr.sdk.model.IDCardParams;
//import com.baidu.ocr.sdk.model.IDCardResult;
//import com.baidu.ocr.ui.camera.CameraActivity;
//import com.baidu.ocr.ui.camera.CameraNativeHelper;
//import com.baidu.ocr.ui.camera.CameraView;
//
//import android.Manifest;
//import android.app.Activity;
//import android.content.Intent;
//import android.content.pm.PackageManager;
//import android.database.Cursor;
//import android.net.Uri;
//import android.os.Bundle;
//import android.provider.MediaStore;
//import android.support.v4.app.ActivityCompat;
//import android.support.v7.app.AlertDialog;
//import android.support.v7.app.AppCompatActivity;
//import android.text.TextUtils;
//import android.view.View;
//import android.widget.TextView;
//
//public class IDCardActivity extends AppCompatActivity {
//
//    private static final int REQUEST_CODE_PICK_IMAGE_FRONT = 201;
//    private static final int REQUEST_CODE_PICK_IMAGE_BACK = 202;
//    private static final int REQUEST_CODE_CAMERA = 102;
//
//    private TextView infoTextView;
//    private AlertDialog.Builder alertDialog;
//
//    private boolean checkGalleryPermission() {
//        int ret = ActivityCompat.checkSelfPermission(IDCardActivity.this, Manifest.permission
//                .READ_EXTERNAL_STORAGE);
//        if (ret != PackageManager.PERMISSION_GRANTED) {
//            ActivityCompat.requestPermissions(IDCardActivity.this,
//                    new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},
//                    1000);
//            return false;
//        }
//        return true;
//    }
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_idcard);
//        alertDialog = new AlertDialog.Builder(this);
//        infoTextView = (TextView) findViewById(R.id.info_text_view);
//
//        //  初始化本地质量控制模型,释放代码在onDestory中
//        //  调用身份证扫描必须加上 intent.putExtra(CameraActivity.KEY_NATIVE_MANUAL, true); 关闭自动初始化和释放本地模型
//        CameraNativeHelper.init(this, OCR.getInstance().getLicense(),
//                new CameraNativeHelper.CameraNativeInitCallback() {
//            @Override
//            public void onError(int errorCode, Throwable e) {
//                String msg;
//                switch (errorCode) {
//                    case CameraView.NATIVE_SOLOAD_FAIL:
//                        msg = "加载so失败，请确保apk中存在ui部分的so";
//                        break;
//                    case CameraView.NATIVE_AUTH_FAIL:
//                        msg = "授权本地质量控制token获取失败";
//                        break;
//                    case CameraView.NATIVE_INIT_FAIL:
//                        msg = "本地质量控制";
//                        break;
//                    default:
//                        msg = String.valueOf(errorCode);
//                }
//                infoTextView.setText("本地质量控制初始化错误，错误原因： " + msg);
//            }
//        });
//
//        findViewById(R.id.gallery_button_front).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                if (checkGalleryPermission()) {
//                    Intent intent = new Intent(Intent.ACTION_PICK);
//                    intent.setType("image/*");
//                    startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE_FRONT);
//                }
//            }
//        });
//
//        findViewById(R.id.gallery_button_back).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                if (checkGalleryPermission()) {
//                    Intent intent = new Intent(Intent.ACTION_PICK);
//                    intent.setType("image/*");
//                    startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE_BACK);
//                }
//            }
//        });
//
//        // 身份证正面拍照
//        findViewById(R.id.id_card_front_button).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent intent = new Intent(IDCardActivity.this, CameraActivity.class);
//                intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
//                        FileUtil.getSaveFile(getApplication()).getAbsolutePath());
//                intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
//                startActivityForResult(intent, REQUEST_CODE_CAMERA);
//            }
//        });
//
//        // 身份证正面扫描
//        findViewById(R.id.id_card_front_button_native).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent intent = new Intent(IDCardActivity.this, CameraActivity.class);
//                intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
//                        FileUtil.getSaveFile(getApplication()).getAbsolutePath());
//                intent.putExtra(CameraActivity.KEY_NATIVE_ENABLE,
//                        true);
//                // KEY_NATIVE_MANUAL设置了之后CameraActivity中不再自动初始化和释放模型
//                // 请手动使用CameraNativeHelper初始化和释放模型
//                // 推荐这样做，可以避免一些activity切换导致的不必要的异常
//                intent.putExtra(CameraActivity.KEY_NATIVE_MANUAL,
//                        true);
//                intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
//                startActivityForResult(intent, REQUEST_CODE_CAMERA);
//            }
//        });
//
//        // 身份证反面拍照
//        findViewById(R.id.id_card_back_button).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent intent = new Intent(IDCardActivity.this, CameraActivity.class);
//                intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
//                        FileUtil.getSaveFile(getApplication()).getAbsolutePath());
//                intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_BACK);
//                startActivityForResult(intent, REQUEST_CODE_CAMERA);
//            }
//        });
//
//        // 身份证反面扫描
//        findViewById(R.id.id_card_back_button_native).setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Intent intent = new Intent(IDCardActivity.this, CameraActivity.class);
//                intent.putExtra(CameraActivity.KEY_OUTPUT_FILE_PATH,
//                        FileUtil.getSaveFile(getApplication()).getAbsolutePath());
//                intent.putExtra(CameraActivity.KEY_NATIVE_ENABLE,
//                        true);
//                // KEY_NATIVE_MANUAL设置了之后CameraActivity中不再自动初始化和释放模型
//                // 请手动使用CameraNativeHelper初始化和释放模型
//                // 推荐这样做，可以避免一些activity切换导致的不必要的异常
//                intent.putExtra(CameraActivity.KEY_NATIVE_MANUAL,
//                        true);
//                intent.putExtra(CameraActivity.KEY_CONTENT_TYPE, CameraActivity.CONTENT_TYPE_ID_CARD_BACK);
//                startActivityForResult(intent, REQUEST_CODE_CAMERA);
//            }
//        });
//    }
//
//    private void recIDCard(String idCardSide, String filePath) {
//        IDCardParams param = new IDCardParams();
//        param.setImageFile(new File(filePath));
//        // 设置身份证正反面
//        param.setIdCardSide(idCardSide);
//        // 设置方向检测
//        param.setDetectDirection(true);
//        // 设置图像参数压缩质量0-100, 越大图像质量越好但是请求时间越长。 不设置则默认值为20
//        param.setImageQuality(20);
//
//        OCR.getInstance().recognizeIDCard(param, new OnResultListener<IDCardResult>() {
//            @Override
//            public void onResult(IDCardResult result) {
//                if (result != null) {
//                    alertText("", result.toString());
//                }
//            }
//
//            @Override
//            public void onError(OCRError error) {
//                alertText("", error.getMessage());
//            }
//        });
//    }
//
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        if (requestCode == REQUEST_CODE_PICK_IMAGE_FRONT && resultCode == Activity.RESULT_OK) {
//            Uri uri = data.getData();
//            String filePath = getRealPathFromURI(uri);
//            recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);
//        }
//
//        if (requestCode == REQUEST_CODE_PICK_IMAGE_BACK && resultCode == Activity.RESULT_OK) {
//            Uri uri = data.getData();
//            String filePath = getRealPathFromURI(uri);
//            recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);
//        }
//
//        if (requestCode == REQUEST_CODE_CAMERA && resultCode == Activity.RESULT_OK) {
//            if (data != null) {
//                String contentType = data.getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
//                String filePath = FileUtil.getSaveFile(getApplicationContext()).getAbsolutePath();
//                if (!TextUtils.isEmpty(contentType)) {
//                    if (CameraActivity.CONTENT_TYPE_ID_CARD_FRONT.equals(contentType)) {
//                        recIDCard(IDCardParams.ID_CARD_SIDE_FRONT, filePath);
//                    } else if (CameraActivity.CONTENT_TYPE_ID_CARD_BACK.equals(contentType)) {
//                        recIDCard(IDCardParams.ID_CARD_SIDE_BACK, filePath);
//                    }
//                }
//            }
//        }
//    }
//
//    private void alertText(final String title, final String message) {
//        this.runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                alertDialog.setTitle(title)
//                        .setMessage(message)
//                        .setPositiveButton("确定", null)
//                        .show();
//            }
//        });
//    }
//
//    private String getRealPathFromURI(Uri contentURI) {
//        String result;
//        Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
//        if (cursor == null) { // Source is Dropbox or other similar local file path
//            result = contentURI.getPath();
//        } else {
//            cursor.moveToFirst();
//            int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
//            result = cursor.getString(idx);
//            cursor.close();
//        }
//        return result;
//    }
//
//    @Override
//    protected void onDestroy() {
//        // 释放本地质量控制模型
//        CameraNativeHelper.release();
//        super.onDestroy();
//    }
//}
